{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "744948b4-9e68-4d86-94e3-75686c57381f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from scipy.stats import norm\n",
    "import math"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "9428f835-5091-45ab-9d5a-5146d743f89e",
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']    # 用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus'] = False    # 用来正常显示负号"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ae5d7a29-314c-48c6-abc9-ee987d86416e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>auction_id</th>\n",
       "      <th>experiment</th>\n",
       "      <th>date</th>\n",
       "      <th>hour</th>\n",
       "      <th>device_make</th>\n",
       "      <th>platform_os</th>\n",
       "      <th>browser</th>\n",
       "      <th>yes</th>\n",
       "      <th>no</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0008ef63-77a7-448b-bd1e-075f42c55e39</td>\n",
       "      <td>exposed</td>\n",
       "      <td>2020-07-10</td>\n",
       "      <td>8</td>\n",
       "      <td>Generic Smartphone</td>\n",
       "      <td>6</td>\n",
       "      <td>Chrome Mobile</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>000eabc5-17ce-4137-8efe-44734d914446</td>\n",
       "      <td>exposed</td>\n",
       "      <td>2020-07-07</td>\n",
       "      <td>10</td>\n",
       "      <td>Generic Smartphone</td>\n",
       "      <td>6</td>\n",
       "      <td>Chrome Mobile</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0016d14a-ae18-4a02-a204-6ba53b52f2ed</td>\n",
       "      <td>exposed</td>\n",
       "      <td>2020-07-05</td>\n",
       "      <td>2</td>\n",
       "      <td>E5823</td>\n",
       "      <td>6</td>\n",
       "      <td>Chrome Mobile WebView</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>00187412-2932-4542-a8ef-3633901c98d9</td>\n",
       "      <td>control</td>\n",
       "      <td>2020-07-03</td>\n",
       "      <td>15</td>\n",
       "      <td>Samsung SM-A705FN</td>\n",
       "      <td>6</td>\n",
       "      <td>Facebook</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>001a7785-d3fe-4e11-a344-c8735acacc2c</td>\n",
       "      <td>control</td>\n",
       "      <td>2020-07-03</td>\n",
       "      <td>15</td>\n",
       "      <td>Generic Smartphone</td>\n",
       "      <td>6</td>\n",
       "      <td>Chrome Mobile</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                             auction_id experiment        date  hour  \\\n",
       "0  0008ef63-77a7-448b-bd1e-075f42c55e39    exposed  2020-07-10     8   \n",
       "1  000eabc5-17ce-4137-8efe-44734d914446    exposed  2020-07-07    10   \n",
       "2  0016d14a-ae18-4a02-a204-6ba53b52f2ed    exposed  2020-07-05     2   \n",
       "3  00187412-2932-4542-a8ef-3633901c98d9    control  2020-07-03    15   \n",
       "4  001a7785-d3fe-4e11-a344-c8735acacc2c    control  2020-07-03    15   \n",
       "\n",
       "          device_make  platform_os                browser  yes  no  \n",
       "0  Generic Smartphone            6          Chrome Mobile    0   0  \n",
       "1  Generic Smartphone            6          Chrome Mobile    0   0  \n",
       "2               E5823            6  Chrome Mobile WebView    0   1  \n",
       "3   Samsung SM-A705FN            6               Facebook    0   0  \n",
       "4  Generic Smartphone            6          Chrome Mobile    0   0  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 导入数据集\n",
    "df = pd.read_csv('./AdSmartABdata.csv')\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "a138682c-b0c7-4a31-af66-8600d13fe150",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 8077 entries, 0 to 8076\n",
      "Data columns (total 9 columns):\n",
      " #   Column       Non-Null Count  Dtype \n",
      "---  ------       --------------  ----- \n",
      " 0   auction_id   8077 non-null   object\n",
      " 1   experiment   8077 non-null   object\n",
      " 2   date         8077 non-null   object\n",
      " 3   hour         8077 non-null   int64 \n",
      " 4   device_make  8077 non-null   object\n",
      " 5   platform_os  8077 non-null   int64 \n",
      " 6   browser      8077 non-null   object\n",
      " 7   yes          8077 non-null   int64 \n",
      " 8   no           8077 non-null   int64 \n",
      "dtypes: int64(4), object(5)\n",
      "memory usage: 568.0+ KB\n"
     ]
    }
   ],
   "source": [
    "# 查看数据\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c0dd7725-4233-4b55-9d9d-ffcb012df878",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>hour</th>\n",
       "      <th>platform_os</th>\n",
       "      <th>yes</th>\n",
       "      <th>no</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>8077.000000</td>\n",
       "      <td>8077.000000</td>\n",
       "      <td>8077.000000</td>\n",
       "      <td>8077.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>11.615080</td>\n",
       "      <td>5.947134</td>\n",
       "      <td>0.070818</td>\n",
       "      <td>0.083075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>5.734879</td>\n",
       "      <td>0.224333</td>\n",
       "      <td>0.256537</td>\n",
       "      <td>0.276013</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>7.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>13.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>15.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>23.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              hour  platform_os          yes           no\n",
       "count  8077.000000  8077.000000  8077.000000  8077.000000\n",
       "mean     11.615080     5.947134     0.070818     0.083075\n",
       "std       5.734879     0.224333     0.256537     0.276013\n",
       "min       0.000000     5.000000     0.000000     0.000000\n",
       "25%       7.000000     6.000000     0.000000     0.000000\n",
       "50%      13.000000     6.000000     0.000000     0.000000\n",
       "75%      15.000000     6.000000     0.000000     0.000000\n",
       "max      23.000000     7.000000     1.000000     1.000000"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看数据信息\n",
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "8761c065-7fb2-4f7a-b07b-64ffd1aa0828",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "experiment - ['exposed' 'control']\n",
      "date - ['2020-07-10' '2020-07-07' '2020-07-05' '2020-07-03' '2020-07-09'\n",
      " '2020-07-04' '2020-07-06' '2020-07-08']\n",
      "platform_os - [6 5 7]\n",
      "browser - ['Chrome Mobile' 'Chrome Mobile WebView' 'Facebook' 'Mobile Safari'\n",
      " 'Chrome Mobile iOS' 'Samsung Internet' 'Mobile Safari UI/WKWebView'\n",
      " 'Chrome' 'Opera Mini' 'Edge Mobile' 'Android' 'Pinterest' 'Opera Mobile'\n",
      " 'Firefox Mobile' 'Puffin']\n",
      "yes - [0 1]\n",
      "no - [0 1]\n"
     ]
    }
   ],
   "source": [
    "# 查看数据字段下的值\n",
    "for column in df.drop(['auction_id','hour','device_make'],axis=1).columns:\n",
    "    print(column,'-',df[column].unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "5b016bc8-d402-438c-8197-f31af080fed0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '对于不同类型样本的计数')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1500x1200 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 查看试验组和对照组的样本容量以及是都均衡\n",
    "fig,axes = plt.subplots(figsize=(5,4),dpi=300)\n",
    "sns.countplot(x=df['experiment'],alpha=0.95)\n",
    "plt.title('对于不同类型样本的计数')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a0eb90eb-d749-4237-a7b7-a1721f143b7c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "控制组的样本量：4071\n",
      "试验组的样本量：4006\n",
      "控制组点击广告的用户数量：264\n",
      "试验组点击广告的用户数量：308\n",
      "控制组广告点击率：6.48%\n",
      "试验组广告点击率：7.69%\n"
     ]
    }
   ],
   "source": [
    "# 计算统计量\n",
    "control = df[df['experiment']=='control']\n",
    "exposed = df[df['experiment']=='exposed']\n",
    "\n",
    "# 计算样本量\n",
    "total_control = control['auction_id'].count()\n",
    "total_exposed = exposed['auction_id'].count()\n",
    "\n",
    "# 计算点击广告的用户数量\n",
    "clicks_control = control['auction_id'].loc[(control['yes']==1) & (control['no']==0)].count()\n",
    "clicks_exposed = exposed['auction_id'].loc[(exposed['yes']==1) & (exposed['no']==0)].count()\n",
    "\n",
    "# 计算广告点击率\n",
    "p1 = clicks_control / total_control\n",
    "p2 = clicks_exposed / total_exposed\n",
    "\n",
    "# 输出\n",
    "print(f'控制组的样本量：{total_control}\\n试验组的样本量：{total_exposed}\\n控制组点击广告的用户数量：{clicks_control}\\n试验组点击广告的用户数量：{clicks_exposed}\\n控制组广告点击率：' + format(p1,'.2%') + '\\n试验组广告点击率：' + format(p2,'.2%'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "add5cdd0-7be7-4090-89c4-5032e8e3a85e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 封装的代码\n",
    "\n",
    "class Sample:\n",
    "    '''\n",
    "    计算样本量\n",
    "    https://www.abtasty.com/sample-size-calculator/\n",
    "    '''\n",
    "\n",
    "    def sample_size_u(self, u: float, s: float, a: float = 0.05, b: float = 0.2) -> int:\n",
    "        '''\n",
    "        已知双样本(A/B)均数，求实验样本量\n",
    "        :param a: alpha\n",
    "        :param b: beta\n",
    "        :param u: 均值的差值\n",
    "        :param s: 经验标准差\n",
    "        :return: 样本量\n",
    "        '''\n",
    "        n = 2 * pow(((norm.ppf(1 - a / 2) + norm.ppf(1 - b)) / (u / s)), 2)\n",
    "        return math.ceil(n)\n",
    "\n",
    "    def sample_size_p(self, p1: float, p2: float, a: float = 0.05, b: float = 0.2) -> int:\n",
    "        '''\n",
    "        已知双样本(A/B)频数，求实验样本量\n",
    "        :param a: alpha\n",
    "        :param b: beta\n",
    "        :param p1: 样本的频数，例如点击率50%，次日留存率80%\n",
    "        :param p2: 样本的频数\n",
    "        :return: 样本量\n",
    "        '''\n",
    "        n = pow((norm.ppf(1 - a / 2) + norm.ppf(1 - b)) / (p1 - p2), 2) * (p1 * (1 - p1) + p2 * (1 - p2))\n",
    "        return math.ceil(n)\n",
    "\n",
    "\n",
    "class ABtest_u():\n",
    "    '''\n",
    "    双样本双尾均值检验\n",
    "    '''\n",
    "\n",
    "    def __init__(self, x1: float, x2: float, s1: float, s2: float, n1: int, n2: int, a: float = 0.05, b: float = 0.2):\n",
    "        self.x1 = x1  # 对照组均值\n",
    "        self.x2 = x2  # 测试组均值\n",
    "        self.s1 = s1  # 对照组标准差\n",
    "        self.s2 = s2  # 测试组标准差\n",
    "        self.n1 = n1  # 对照组样本量\n",
    "        self.n2 = n2  # 测试组样本量\n",
    "        self.a = a  # alpha\n",
    "        self.b = b  # beta\n",
    "\n",
    "    def significance_u(self) -> (int, float, float):\n",
    "        '''\n",
    "        双样本双尾均值显著性检验\n",
    "        '''\n",
    "        z = (self.x1 - self.x2) / pow(self.s1 ** 2 / self.n1 + self.s2 ** 2 / self.n2, 1 / 2)\n",
    "        if z > 0:\n",
    "            p = (1 - norm.cdf(z)) * 2\n",
    "            if p < self.a:  # 拒绝原假设，接受备选假设\n",
    "                f = 1\n",
    "            else:  # 接受原假设\n",
    "                f = 0\n",
    "        else:\n",
    "            p = 2 * norm.cdf(z)\n",
    "            if p < self.a:  # 拒绝原假设，接受备选假设\n",
    "                f = 1\n",
    "            else:  # 接受原假设\n",
    "                f = 0\n",
    "        return f, format(z, '.2f'), format(p, '.2f')\n",
    "\n",
    "    def confidence_u(self) -> tuple:\n",
    "        '''\n",
    "        双样本均值置信区间\n",
    "        '''\n",
    "        d = norm.ppf(1 - self.a / 2) * pow(self.s1 ** 2 / self.n1 + self.s2 ** 2 / self.n2, 1 / 2)\n",
    "        floor = -(self.x1 - self.x2 - d)\n",
    "        ceil = -(self.x1 - self.x2 + d)\n",
    "        return (format(floor, '.2f'), format(ceil, '.2f'))\n",
    "\n",
    "    def power_u(self) -> float:\n",
    "        '''\n",
    "        双样本均数功效\n",
    "        '''\n",
    "        z = abs(self.x1 - self.x2) / pow(self.s1 ** 2 / self.n1 + self.s2 ** 2 / self.n2, 1 / 2) - norm.ppf(\n",
    "            1 - self.a / 2)\n",
    "        b = 1 - norm.cdf(z)\n",
    "        power = 1 - b\n",
    "        return format(power, '.2%')\n",
    "\n",
    "    def main(self):\n",
    "        f, z, p = self.significance_u()\n",
    "        ci = self.confidence_u()\n",
    "        power = self.power_u()\n",
    "        print(f'保留组均值：{self.x1}')\n",
    "        print(f'测试组均值：{self.x2}')\n",
    "        print('是否显著：' + ('统计效果显著，拒绝原假设' if f == 1 else '统计效果不显著，不能拒绝原假设'))\n",
    "        print(f'变化度：' + format((self.x2 - self.x1) / self.x1, '.2%'))\n",
    "        print(f'置信区间：{ci}')\n",
    "        print(f'p-value：{p}')\n",
    "        print(f'功效：{power}')\n",
    "\n",
    "\n",
    "class ABtest_p():\n",
    "    '''\n",
    "    双样本双尾频数检验\n",
    "    '''\n",
    "\n",
    "    def __init__(self, p1: float, p2: float, n1: int, n2: int, a: float = 0.05, b: float = 0.2):\n",
    "        self.p1 = p1\n",
    "        self.p2 = p2\n",
    "        self.n1 = n1\n",
    "        self.n2 = n2\n",
    "        self.a = a\n",
    "        self.b = b\n",
    "\n",
    "    def significance_p(self) -> (int, float, float):\n",
    "        '''\n",
    "        双样本双尾频数显著性检验\n",
    "        '''\n",
    "        p_pool = (self.n1 * self.p1 + self.n2 * self.p2) / (self.n1 + self.n2)\n",
    "\n",
    "        z = (self.p1 - self.p2) / pow(p_pool * (1 - p_pool) * (1 / self.n1 + 1 / self.n2), 1 / 2)\n",
    "\n",
    "        if z > 0:\n",
    "            p = (1 - norm.cdf(z)) * 2\n",
    "            if p < self.a:  # 拒绝原假设，接受备选假设\n",
    "                f = 1\n",
    "            else:  # 接受原假设\n",
    "                f = 0\n",
    "        else:\n",
    "            p = 2 * norm.cdf(z)\n",
    "            if p < self.a:  # 拒绝原假设，接受备选假设\n",
    "                f = 1\n",
    "            else:  # 接受原假设\n",
    "                f = 0\n",
    "        return f, format(z, '.2f'), format(p, '.2f')\n",
    "\n",
    "    def confidence_p(self) -> tuple:\n",
    "        '''\n",
    "        双样本频数置信区间\n",
    "        '''\n",
    "        d = norm.ppf(1 - self.a / 2) * pow(self.p1 * (1 - self.p1) / self.n1 + self.p2 * (1 - self.p2) / self.n2, 1 / 2)\n",
    "        floor = -(self.p1 - self.p2 - d)\n",
    "        ceil = -(self.p1 - self.p2 + d)\n",
    "        return (format(floor, '.2%'), format(ceil, '.2%'))\n",
    "\n",
    "    def power_p(self) -> float:\n",
    "        '''\n",
    "        双样本频数功效\n",
    "        '''\n",
    "        z = abs(self.p1 - self.p2) / pow(self.p1 * (1 - self.p1) / self.n1 + self.p2 * (1 - self.p2) / self.n2,\n",
    "                                         1 / 2) - norm.ppf(1 - self.a / 2)\n",
    "        b = 1 - norm.cdf(z)\n",
    "        power = 1 - b\n",
    "        return format(power, '.2%')\n",
    "\n",
    "    def main(self):\n",
    "        f, z, p = self.significance_p()\n",
    "        ci = self.confidence_p()\n",
    "        power = self.power_p()\n",
    "        print(f'保留组均值：{self.p1}')\n",
    "        print(f'测试组均值：{self.p2}')\n",
    "        print('是否显著：' + ('统计效果显著，拒绝原假设' if f == 1 else '统计效果不显著，不能拒绝原假设'))\n",
    "        print(f'变化度：' + format((self.p2 - self.p1) / self.p1, '.2%'))\n",
    "        print(f'置信区间：{ci}')\n",
    "        print(f'p-value：{p}')\n",
    "        print(f'功效：{power}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "2d9415b2-8909-48b0-8f21-67ef5b8bf932",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "保留组均值：0.06484893146647015\n",
      "测试组均值：0.07688467299051423\n",
      "是否显著：统计效果显著，拒绝原假设\n",
      "变化度：18.56%\n",
      "置信区间：('2.32%', '0.08%')\n",
      "p-value：0.04\n",
      "功效：55.87%\n"
     ]
    }
   ],
   "source": [
    "# 执行代码\n",
    "test = ABtest_p(p1=p1, p2=p2, n1=total_control, n2=total_exposed)\n",
    "test.main()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d2203a5d-ce2f-4540-b071-457172e62272",
   "metadata": {},
   "source": [
    "### 结论分析\n",
    "- 描述统计分析\n",
    "  控制组的样本量：4071个，广告点击率：6.48%\n",
    "  试验组的样本量：4006个，广告点击率：7.69%\n",
    "- 推论统计分析\n",
    "  - 假设检验\n",
    "    独立双样本 p-value = 0.04( α = 5% ) ，双尾检验\n",
    "    统计显著，拒绝零假设，接受备择假设。即：智能广告和普通广告的点击率不同，两种广告的点击率是有差别的\n",
    "  - 置信区间\n",
    "    两个独立样本均值差值的置信区间，置信水平 95%，CI = (2.32%, 0.08%)\n",
    "    控制组的点击率小于试验组，且通过读取置信区间的数值，区间边界值均为负值，证明控制组的点击率显著小于实验组，即 智能广告的点击率不同显著小于普通广告\n",
    "- 功效\n",
    "  power = 55.87%，效果不显著，结论：不建议大规模推广智能广告"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
